home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / glassme / gme01 < prev    next >
Text File  |  1991-02-19  |  3KB  |  103 lines

  1. %TEX 
  2. \subsection{DefVal.}
  3. %
  4. %TEX
  5. Write out VAtom.
  6. %
  7. defval(>node,>VType*typfun cs*v atom):
  8.     where (>v atom ,VAtom*_>), ->,
  9.     where (>node,df*org*a*rest>),
  10.     get atom result type (>typfun cs, fun args>,result type>),
  11.     where (>LIST*fun args, fun arg list>),
  12.     repair (>node,>DefAtom,>org*a*fun arg list*result type);
  13. defval(>node,>VType*t):
  14.     where (>node,df*origen*a>),
  15.     where (>a,name ce*rest>),
  16.     repair(>a,>name ce,>t).
  17.  
  18. get atom result type (>TypFun*arg*rest, arg*arg list>, result>): ->,
  19.     get atom result type (>rest, arg list> ,result>);
  20. get atom result type (>r, empty>,r>):.
  21.  
  22.  
  23. %TEX
  24. \subsection{DefTyp.}
  25. %
  26.  
  27. def typ (>node,>org,>n,>TypAtom*_): ->,
  28.     repair (>node,>DefBasetype, >org*n); 
  29. def typ (>node,>org,>n,>t):
  30.      trans typ (>t,>t).
  31.  
  32.  
  33. %TEX
  34. \subsection{Type structures.}
  35.  
  36. Expand type power.
  37. %
  38. type power (>node, >type, >ParInt* I NUM * power):->,
  39.     expand typpow (>type,>power,field list>),
  40.     repair (>node,>TypProd,>LIST*fieldlist);
  41. type power (>node, >type,>args):
  42.     repair (>node,>TypErr,>STRING*"*** Failed to expand power type ").
  43.     
  44.  
  45. expand typpow(>type,>"0",empty>):->;
  46. expand typpow(>type,>p,type*r fld>):
  47.     dc (>p+" 1 -ps.\n",pp>),
  48.     expand typpow (>type ,>pp,rfld>).
  49.  
  50. %TEX
  51. \subsection{Transform types Typxxx}
  52. %
  53.  
  54. trans typ(> node, > TypAtom * atomnm): ->,
  55.         repair (>node, >TypBase,> atomnm);
  56. trans typ(> node, > TypFun * funpar* funres): ->,
  57.     trans typ (> funpar, >funpar),
  58.     trans typ (> funres, >funres);
  59. trans typ(> node, > TypIn * ityp): ->,
  60.     trans typ (> ityp, >ityp);
  61. trans typ(> node, > TypOut * otyp): ->,
  62.     trans typ (> otyp, >otyp);
  63. trans typ(> node, > TypUni * uityp* uotyp): ->,
  64.     trans typ (> uityp, >uityp),
  65.     trans typ (> uotyp, >uotyp);
  66. trans typ(> node, > TypNon * nontyp): ->,
  67.     trans typ (> nontyp, >nontyp);
  68. trans typ (>constant ,> TypInt): ->,
  69.         assign (> TypInt, >PTInt, o>);
  70. trans typ (> node,> TypFlo): ->,
  71.         assign (> TypFlo, >PTFlo, o>);
  72. trans typ (> node,> TypString): ->,
  73.         assign (> TypString, >PTStr, o>);
  74. trans typ (> node,> TypBool): ->,
  75.         assign (> TypBool, >PTBool, o>);
  76. trans typ (> constant,> TypAppset): ->;
  77. trans typ(> node, > TypPwr * pwrtyp* pwrval): ->,
  78.     trans typ (> pwrtyp, >pwrtyp),
  79.     trans val (> pwrval, >pwrval,>empty),
  80.         type power (>node,>pwrtyp,>pwrval); 
  81. trans typ(> node, > TypProd * ptypes): ->,
  82.     trans typ list (> ptypes, >ptypes);
  83. trans typ(> node, > TypStar * startyp): ->,
  84.     trans typ (> startyp, >startyp);
  85. trans typ(> node, > TypLocal * locsyms* loctyp): ->,
  86.     trans typ (> loctyp, >loctyp);
  87. trans typ(> node, > TypSym * sym): ->;
  88. trans typ(> node, > TypBind * boundname): ->;
  89. trans typ (> x,> x):. 
  90.  
  91.  
  92. %TEX
  93. \subsection{Transform formal connections FCxxx}
  94. %
  95. trans formcon(> node, > FCList * fclist): ->,
  96.     trans formcon list (> fclist, >fclist);
  97. trans formcon(> node, > FCSym * fcsym): ->;
  98. trans formcon(> node, > FCComp * fcfirct* fcrest): ->,
  99.     trans formcon (> fcfirct, >fcfirct),
  100.     trans formcon (> fcrest, >fcrest);
  101. trans formcon (> constant,> FpEmpty):->; 
  102. trans formcon (> constant,> FCErr): .
  103.